In modern computer graphics processors, texture processing is one of the key components of the processing. Texture processing can include many different types of texture mapping techniques including cubic mapping, mipmapping, and anisotropic mapping among others. Multiple textures can be applied to the objects in both static and dynamic modes, which assume texture prefetch before shader program execution as well as dependent texture loading during shader execution. The complexity and volume of logical and arithmetic operations required to perform texture processing necessitate the use of dedicated circuits in addition to those utilized in other graphics processing operations. Accordingly, these dedicated texture processing circuits can consist of a significant percentage of the hardware gates that make up a graphics processing unit.
In addition to texture processing, graphics processors also include logic to perform several types of shader processing operations. For example, shader processing operations can be performed by vertex shaders, geometry shaders, and pixel shaders. In general, the shaders will require texture mapping service from the texture processing hardware at various stages of shader processing. For example, some shader operations can benefit from the efficiency improvement gained by preloading, also referred to as prefetching, texture data before shader execution. Preload texturing or static texturing can be especially beneficial in pixel shading operations where the texture processing requirements can be reliably predicted before shading operations. Alternatively, other shader operations require the texture data to be processed during the shader execution for a particular graphic element has commenced. Texture processing that is requested by the shader is referred to as dependent read texturing or dynamic texture loading and can be required more frequently in vertex and geometry shader operations as well as in some pixel shader operations. Another complication comes from multiple different objects requiring processing in parallel shaders. The multiple objects may require different sets of textures or different texture contexts, which are defined by texture descriptors containing information including, for example, location, type, and processing requirements, among others. The texture data includes the associated descriptors, for defining memory location, format, and other critical information related to the processing of texture data in a graphics pipeline.
Management of the texture descriptors in a complex texture processing environment is a non-trivial task and requires significant specialized resources. Since providing exclusive texture processing hardware to address each of the preload and dependent read texturing requirements creates an unwanted level of redundancy and can be costly in terms of processor hardware, methods and systems for sharing texture processing hardware are needed. Thus, a heretofore-unaddressed need exists in the industry for improved texture processing operations.